﻿using System;
using System.ComponentModel;
using System.Runtime.Serialization;

namespace BrainTechLLC
{
    public interface IDirectionFloat : IVector4Float
    {
        IDirectionFloat DirectionVector { get; set; }
        GeneralDirection CardinalDirection { get; }
        IDirectionFloat GetSymmetric(Symmetry symmetry);
    }

    public interface IDirectionInt : IVector4Int
    {
        DirectionInt DirectionVector { get; set; }
        GeneralDirection CardinalDirection { get; }
        DirectionInt GetSymmetric(Symmetry symmetry);
    }

    public interface IDirectionAndSpeedFloat : IDirectionFloat, ISpeedFloat, IVector4Float
    {
    }

    public interface IPositionAndSpeedFloat : IDirectionAndSpeedFloat, IHasLocationFloat, IDirectionFloat, IHasSpeedFloat, IVector4Float
    {
    }

    public interface IHasPositionFloat : IHasLocationFloat, IDirectionFloat
    {
    }

    #if NO_SILVERLIGHT
[Browsable(true)]
[TypeConverter(typeof(ExpandableObjectConverter))]
#endif
    public interface IDirectionAndSpeedInt : IDirectionInt, ISpeedInt, IVector4Int
    {
    }

    #if NO_SILVERLIGHT
[Browsable(true)]
[TypeConverter(typeof(ExpandableObjectConverter))]
#endif
    public interface IPositionAndSpeedInt : IDirectionAndSpeedInt, IHasLocationInt, IDirectionInt, IHasSpeedInt, IVector4Int
    {
    }

    #if NO_SILVERLIGHT
[Browsable(true)]
[TypeConverter(typeof(ExpandableObjectConverter))]
#endif
    public interface IHasPositionInt : IHasLocationInt, IDirectionInt
    {
    }
}
